#pragma once

#include <stdint.h>
#include <string>
#include "uv.h"

namespace rr {
namespace nio {

class InetAddress
{
public:
    InetAddress(const std::string& ip, uint16_t port);

    sockaddr *GetSockAddr();

    std::string& GetIp() { return ip_; }
    uint16_t GetPort() { return port_; }

private:
    void Update(const std::string& ip, uint16_t port);

public:
    std::string ip_;
    uint16_t port_ = 0;

    union {
        sockaddr_in addr_;
        sockaddr_in6 addr6_;
    };
};

} //namespace 
} //namespace 
